Technotes
TECHNOTE: History & Peregrinations: The Dogcow Goes QuickTime VR
Tom Maremaa
Apple Developer Technical Support (DTS)
Thanks to Mark Johnson's inspiration, the original Technote 31 was written by
Red Harlan way back in March of 1989, and the Dogcow -- that lovable little
critter aptly named Clarus -- was brought to life. The rest, of course, is
Dogcow history. In the span of seven years, the Dogcow has gained almost
mythological status, serving as the de facto mascot and torchbearer for legions
of Apple Developer Technical Support engineers. And its magic continues to this
day.
This Technote attempts to document the Dogcow's various and sundry exploits --
most recently, in the world of QuickTime VR. Indeed, some might say that the
Dogcow has "gone VR." In any case, this Note looks at some of the Dogcow's
history and peregrinations and then explains the technique for creating a
QuickTime VR object movie with the Dogcow as star. Could a part in the next
Babe movie be far behind? Stay tuned for details.
Contents
Brian's Bechtel's Nest of Dogcattle Web Page
DTS engineer Brian Bechtel has been the guardian of Dogcow history, creating
and maintaining a great Web page, entitled
"A nest of Dogcattle,"
with a compendium of links to
documents that detail the wonderful history of the Dogcow. Check it out! The
history is explained in, among other places, two issues of develop,
#17
and #18.
Point your browsers to Brian's Web page, which is must-reading for all
Apple developers who want to keep up with Dogcow lore.
The Dogcow has certainly grown by leaps and bounds over the years, starting out
as a character in the original Cairo font designed by Susan Kare. Figure 1
shows Clarus, christened by Mark Harlan in 1989, as a trademarked icon in
Apple's printer driver Page Setup dialog boxes.
Growing Up Ain't That Hard to Do
Figure 1 shows Clarus growing up from the Cairo font to reach Page Setup size
and status.
Figure 1: The Dogcow in its Page Setup size
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f1.gif)
Figure 2 shows the Dogcow flexing her "FatBits," as it were, and getting
bigger.
Figure 2: The Dogcow flexing her FatBits
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f2.gif)
Figure 3 shows the Dogcow becoming even larger than the largest known DTS
engineer, Dave Polaschek, and appearing along the way as a "lawn creature" on
the Apple R & D campus in Cupertino, California.
Figure 3: The Dogcow surpassing the size of the largest known DTS
engineer and appearing as a lawn creature on the R & D campus.
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f3.gif)
The Dogcow Gets Small and Acrobatic
Rand Crippen, a QuickTime for Windows DTS engineer, found this QuickTime movie,
entitled Moofie.MOV, which takes Clarus down to the size of a spinning cursor.
This must be the smallest size yet conceived for Clarus. Have you seen anything
smaller?
Click on the QuickTime movie icon to download the Moofie.MOV file. It's only
32K in size.
Moofie
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/qtmovie.gif)
Note the sound effects and backflips performed by the tiny Clarus.
Moof Sightings
The image of the Dogcow has traveled far and wide, both in and out of
cyberspace, appearing on everything from coffee mugs and T-shirts to e-mail and
technical documentation. Life has been good for the Dogcow.
An incorrect FatBits version of the Dogcow in Macintosh Technote
1019 -
"Plotting Small Icons: The 'SICN' Resource" is shown in Figure 4. Note,
according to DTS engineer Ray Chiang, that it appears like a Dogcow puppy
because the proportions are different. Did the Dogcow actually have progeny?
Hmmmm.
Figure 4: An incorrect FatBits version of the Dogcow
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f4.gif)
The Dogcow Goes to Work!
What a trooper! The Dogcow has been put to work (by Your Humble Technote
Editor) carrying a filing cabinent of archived Technotes. This is quite an
accomplishment for a two-dimensional object; note that the filing cabinet is a
three-dimensional object. The filing cabinet originally had no belt wrapped
around it as it does now. Mike Marinkovich, a prodigiously talented DTS
engineer, suggested in a flash of brilliance that a belt was necessary.
So we had one custom tailored by a belt manufacturer, just for Clarus. The belt
extended all the way around Clarus's belly. But after a lengthy debate among
DTS engineers and managers, it was decided that no belt was necessary after
all! Figure 5 shows the Dogcow performing extra duty, archiving the 350 "old"
Macintosh Technical Notes.
Figure 5: The Dogcow, hearty soul, archiving the "old" Technotes
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f5.gif)
MoofMail, a Routine Part of Everyday DTS Life
Lots of e-mail, or MoofMail, as it is better known, gets sent everyday, as
shown in Figure 6.
Figure 6: A typical MoofMail Reply
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f6.gif)
Guillermo's Classic Dogcow Roll & Dogcow Merry-Go-Round QuickTime Movies
Guillermo Ortiz, DTS's multimedia, printing, imaging and graphics (MPIGs) guru,
contributes four great QuickTime movies with Clarus as the star! You must check
these out. These were originally samples that appeared in
Issue #7 of develop
as part of the article entitled QuickTime 1.0: "You Oughta Be
in the Movies."
Figure 7: A screen from Guillermo's classic Dogcow Merry-Go-Round
QuickTime movie
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f7.gif)
- Note:
- These two classic QuickTime movies are no longer available on the
Developer CD series, due to space considerations. (Yeah, believe that?)
The first movie, Dogcow Roll, includes two versions: one with sound, one
without sound. The second movie, Dogcow Merry-Go-Round, also comes with two
versions, again, one with sound, one without.
You'll need the QuickTime Movie Player to play these. Be sure that you have it
installed on your system.
Dogcow Roll with sound (829K in size)
Dogcow Roll without sound (649K in size)
DogcowMerry-Go-Round with sound (1.1 MB in size)
Dogcow Merry-Go-Round without sound (1 MB in size)
Guillermo wishes to thank Scott "ZZ" Zimmerman for his long hours of work in
rendering these images and creating the sound.
In an effort over a single weekend, George Warner, another prodigiously
talented DTS engineer, created with the help of Joel Cannon, DTS's resident
QuickTime VR guru, an absolute marvel: the first VR Dogcow movie. The
techniques for doing this are explained in the VR Cookbook.
Here is the finished DogCow.MoofVR movie (352K in size) for you to download:
You'll also need the QuickTime VR Player to play the movie, which you can
download from Apple's QuickTime VR Website at
http://www.apple.com/quicktime/qtvr/index.html.
A Cookbook for Creating the DogCow.MoofVR Movie
What follows is a cookbook, with a couple of recipes, for creating your own
QuickTime VR object movie. George Warner and I have worked through the
ingredients and steps involved, using an image processing tool, a 3D rendering
package, and Adobe Premiere.
Step #1
The first thing you want to do is get a PICT of the Dogcow. You need the
high-resolution version. Using Resedit, you can grab the PICT resource -8187
from the LaserWriter 8 driver.
Figure 8 shows you the Dogcow in a PICT resource.
Figure 8: Dogcow as PICT resource -8187
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f8.gif)
Step #2
Using an image processing tool, such as Adobe PhotoShop or Dazzler, you need to
create four PICT files:
- the Dogcow
- the Dogcow mask
- grass (a green circle)
- a black mask for the grass
Use the Dogcow PICT that you saved in the previous step to create the Dogcow
mask. The grass is just a green circle; the mask is a black circle.
Figure 9 shows you the four PICT files you need to create.
Figure 9: Four PICTs you need to create, with masks of the Dogcow
and grass.
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f9.gif)
Step #3
Using a 3D Modeling and Rendering package, such as INFINI-D or StrataVision,
you want to create two rectangle objects for the Dogcow standing on the
grass.
Use the masks and pictures generated in Step #2 to generate the surfaces of the
objects. The masks are used as part of the textures to show where the objects
are transparent. You should now have four objects in your scene:
- the Dogcow (rectangle object with Dogcow surface)
- the grass (rectangle object with grass surface)
- a lightsource (default)
- the camera (default)
Figure 10 shows you the Dogcow standing the grass.
Figure 10: The Dogcow standing on the grass.
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f10.gif)
Step #3a: Some Choices You Need to Make
You now have to make some choices (George's choices are shown in parentheses).
These include the following:
- movie size (128 x 96, George recommends a 3:4 aspect ratio)
- number of frames/revolution (36, in 10deg. steps)
- number of revolutions (19, north 90deg. to south 90deg. in 10deg. steps)
- frame rate (12 frames/second for 3 seconds for 36 frames/revolution)
- QuickTime compressor (Animation)
These options tradeoff resolution against memory size or performance. The
bigger the screen size, or the greater the number of frames, the more memory
required. The fewer the frames, the coarser the results.
Step #4
What QuickTime VR expects is an array of frames, rows and columns. To generate
those, you need to create a movie for every row and then paste them together
into a single movie.
Starting at the top of your object, record a movie of one rotation. Move the
camera down 10deg. and point it at the Dogcow.
Move the camera down 10deg., point it at the Dogcow, and record another full
rotation. Repeat this until you're at the bottom of the object. You now have 19
movies of 36 frames each. Using MoviePlayer or Adobe Premiere, paste all of
these into a single movie and save it flattened. You now have 36
frames/revolution for 19 revolutions for a total of 684 frames.
Step #5
Drag this movie and drop it on the "Make QTVR Object 1.0b1" application. Press
Command-1 to add object data to the movie, as shown Figure 11.
Make QTVR Object 1.0b1 (116K)
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/make_qtvr.gif)
- Note:
- These are the values that George used. Yours may differ, depending on the
choices you made on Step #3a.
Figure 11: Add Object Data dialog
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f11.gif)
Step #6
Hit the OK button and enjoy!
Step #7
Go to lunch, or depending on your time zone, dinner.
A Sidebar: How George Did Texture Maps in Infini-D
To add surface for the Dogcow and the grass, use a mask layer to set the
transparency. Import the Dogcow mask generated in Step #2. Set mapping mode to
Copy and the repeat to H:1, V:1. Also set the transparency to 100% and invert.
Now import the Dogcow PICT from Step #2 as the second layer. This layer will be
in mapping mode Reveal, and the repeat is H:1, V:1, with no transparency, and
no invert. The grass surface is generated the same way, using the appropriate
pictures from Step #2.
Figure 12: Infini-D Surface Composition dialog
 (Disk 1).iso/pc/technical documentation/macintosh technotes and q&as/technotes/tn/1031_f12.gif)
Acknowledgments
Thanks to Brian Bechtel, Joel Cannon, Ray Chiang, Rand Crippen,
Frédérique Courard Hauri, Mike Marinkovich, Guillermo Ortiz, Dave
Polaschek, Sunny Singha, and George Warner.
Technotes
Previous Technote | Contents | Next Technote